Custom Logging (DIY)
Unlock seamless business transaction tracking for any integration platform—even those without built-in tracking or a dedicated Nodinite Logging Agent. This guide empowers you to implement robust, asynchronous, and vendor-neutral Custom Logging with Nodinite.
✅ Effortlessly log business transactions from any system or platform
✅ Achieve reliable, asynchronous logging for maximum performance
✅ Avoid vendor lock-in with flexible, appender-based strategies
✅ Leverage proven templates and connectors for rapid implementation
✅ Monitor, search, and analyze logs in Nodinite for full visibility
Custom Logging with Nodinite lets you track, monitor, and audit business transactions across diverse integration solutions, ensuring compliance and operational excellence.
Important
Always set OriginalMessageTypeName for searchable business data - When implementing Custom Logging, the Message Types field is critical for enabling business intelligence features. Without proper Message Types:
- Search Field Expressions cannot extract Order Numbers, Customer IDs, Invoice amounts, Transaction codes, or other business identifiers
- Log Views can only search by timestamps and correlation IDs, not by business data
- Non-Events Monitoring cannot track message volumes, detect missing messages, or alert on pattern anomalies
- Business Process Modeling (BPM) cannot correlate transactions end-to-end across your custom solution and other systems
Set
OriginalMessageTypeName
in your JSON Log Event before writing to intermediate storage. Plan your Message Types during development—they define how Nodinite extracts searchable business data from your logged messages. Message Types cannot be changed after events are logged.
Diagram: Custom Logging architecture—shows how reusable logging logic in your integration solution produces Nodinite JSON Log Events, which the Pickup Service asynchronously collects and delivers to the Nodinite Log API.
Customers and Partners have successfully used Custom Logging to log business transactions to Nodinite from:
- Apache Camel
- IBM Sterling
- iCore
- Frends
- Ghostnodes
- MoveIT
- TEIS (TietoEvry)
- webMethods (Software AG)
Design Goals
When your integration platform lacks built-in tracking or a Nodinite Logging Agent, you must produce a JSON formatted Log Event and place it on a highly available target (such as a queue, file share, or database).
The Nodinite Pickup Log Events Service Logging Agent fetches your Log Events asynchronously, so you write less custom code, achieve reliable logging, and prevent overloading Nodinite in your custom-built solutions.
Diagram: Two approaches—Async (recommended) and Synchronous logging. Async uses intermediate storage and Pickup Service for reliability and scalability.
- Async Log Event – Asynchronous
- Synchronous Log Event (NOT recommended)
Custom Logging Checklist
Follow these best practices for your Custom Logging strategy:
- Configure Message Types FIRST - Plan your Message Types before writing logging code. This is mandatory for searchable business data.
- Define Search Field Expressions - Configure which business identifiers to extract (Order Numbers, Customer IDs, Invoice amounts, etc.) based on your Message Types.
- Make Custom Logging Asynchronous for reliability and scalability.
- Use an appender-based strategy to avoid vendor lock-in.
- Provide all necessary data:
- OriginalMessageTypeName (mandatory for business intelligence)
- Properties (key/value) via Context Options
- Message Body/Bodies (XML, JSON, Flatfile, CSV, EDIFACT, X12, ...)
- Correlation IDs (ApplicationInterchangeId) for transaction tracking
- Write custom code with a vendor-neutral abstraction layer to prevent lock-in.
- Reuse a shared custom Logging component to support multiple, replaceable destinations.
- Create role-based Log Views - Enable business users to self-service search by business data.
- Configure Non-Events Monitoring - Track expected message volumes and alert on anomalies.
- Design BPM processes - Correlate end-to-end transactions across systems using Message Types.
Steps
Implement Custom Logging to Nodinite in these steps:
Step 1: Programming Language
Choose your programming language. Use proven NuGet packages or handcraft a solution as specified here.
Logging Templates
- Custom Connector (Mule ESB)
- Hello World - Sample (.NET)
- Azure Functions and .NET 5-8 solutions using a Nodinite Serilog appender
Step 2: Create the JSON Log Event
Write code that creates a Nodinite JSON Log Event.
Important
Include OriginalMessageTypeName in your JSON Log Event - This field is mandatory for business intelligence features:
{
"LogAgentValueId": 42,
"EndPointName": "Custom Integration - Receive Orders",
"EndPointUri": "https://api.example.com/orders",
"EndPointDirection": 0,
"EndPointTypeId": 60,
"OriginalMessageTypeName": "PurchaseOrder#1.0",
"ProcessingUser": "CustomIntegration",
"ProcessName": "OrderProcessing",
"ProcessingMachineName": "APP-SERVER-01",
"ProcessingModuleName": "OrderHandler",
"ProcessingModuleType": "CustomAPI",
"StartLogTime": "2025-10-12T10:30:00.000Z",
"EndLogTime": "2025-10-12T10:30:01.500Z",
"LogMessage": "Purchase Order Received",
"StateCode": 0,
"CustomerId": "CUST-12345",
"ApplicationInterchangeId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"Body": "<Order><OrderId>PO-2025-001</OrderId><CustomerId>CUST-12345</CustomerId>...</rder>"
}
Key fields for business intelligence:
OriginalMessageTypeName
: Determines which Search Field Expressions extract usiness dataApplicationInterchangeId
: Enables transaction correlation across systems (required for BPM)Body
: Message payload for Search Field extraction- Custom properties (e.g.,
CustomerId
): Additional searchable metadata via Context Options
Without OriginalMessageTypeName
, features like Non-Events Monitoring, BPM, and business-data searches in Log Views won't function.
Step 3: Write to Intermediate Storage
Write the JSON formatted Log Event to an intermediate storage. The Nodinite Pickup Log Events Service Logging Agent fetches Log Events from many storage types. Choose the one that fits your needs.
Step 4: Install Nodinite Pickup Service
If you have not already done so, install the Nodinite Pickup Log Events Service Logging Agent.
Step 5: Configure Nodinite Pickup Service
Configure the Nodinite Pickup Service for your environment.
Step 6: Monitor the Intermediate Storage
Select a Nodinite Monitoring Agent for your intermediate storage and ensure logging works. Monitor for stockpiled Nodinite JSON formatted Log Events in the target or backout destination—this helps you catch rejected or malformed events.
See the table in Step 3 for more details.
Step 7: Configure Message Types
Define Message Types for your logged events. Each Message Type represents a specific message format (e.g., "PurchaseOrder#1.0", "Invoice#2.0", "CustomerUpdate#1.0"). Message Types are mandatory and determine which Search Field Expressions will extract business data from your logged messages.
Tip
Use meaningful naming conventions like
{MessageName}#{Version}
to identify message formats clearly.
Step 8: Configure Search Field Expressions
Create Search Field Expressions bound to your Message Types. These expressions extract business identifiers (Order Numbers, Customer IDs, Invoice amounts, Transaction codes) from your logged message bodies using:
- XPath (XML messages)
- JSON Path (JSON messages)
- Regular Expressions (any text format)
- Flat File parsers (CSV, fixed-width, delimited)
- Formula (complex transformations)
Step 9: Create Log Views
Create Log Views to visualize and search the logged data. Configure role-based access so business users can self-service search by business data extracted by your Search Field Expressions.
Step 10: Configure Non-Events Monitoring (Optional)
Set up Non-Events Monitoring to track expected message volumes and detect missing messages. This enables proactive alerting when:
- Expected messages don't arrive (e.g., daily batch files)
- Message volumes fall outside normal patterns
- Critical business transactions are missing
Step 11: Design BPM Processes (Optional)
Use Business Process Modeling (BPM) to correlate transactions end-to-end across your custom solution and other systems. BPM uses Message Types and correlation IDs (ApplicationInterchangeId) to track complete business processes through multiple systems.
Next Step
Configure Message Types - Critical first step for searchable business data
Configure Search Field Expressions - Extract business identifiers from logged messages
Install Nodinite Pickup Service
Configure Pickup Service
Create Log Views
Related Topics
JSON Log Event - Required format for Custom Logging
Message Types - Mandatory for business intelligence features
Search Field Expressions - Extract Order Numbers, Customer IDs, Invoice amounts
Log Views - Business-data searches and role-based access
Non-Events Monitoring - Track message volumes and detect missing messages
Business Process Modeling (BPM) - End-to-end transaction correlation
Asynchronous Logging - Recommended approach for reliability
Context Options - Additional searchable properties
Formula - Complex Search Field transformations
Pickup Service - Fetches log events from intermediate storage
Log4Net Appender - .NET Framework appender
Serilog - .NET Core/Azure Functions appender
WCF Diagnostics Tracing Feature - WCF-based logging
Custom Connector for Mule ESB - Mule ESB template